Contents
  1. 1. Student.java:
  2. 2. Students.java:
  3. 3. Lianxix.java:

http://www.cnblogs.com/rollenholt/archive/2011/06/03/2070577.html

Student.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 package lianxi;

//学生类
public class Student {
// 学生学号
private String sid;
// 学生姓名
private String name;
// 默认构造函数
public Student()
{

sid = "-1";
name = "nobody";
}
// 支持属性值初始化的构造函数
public Student(String sid, String name)
{

setSid(sid);
setName(name);
}
// 学生学号的读取函数
public String getSid()
{

return sid;
}
// 学生学号的设置函数
public void setSid(String sid)
{

this.sid = sid;
}
// 学生姓名的读取函数
public String getName()
{

return name;
}
// 学生姓名的设置函数
public void setName(String name)
{

this.name = name;
}
// 格式化字符信息输出
public String toString()
{

return this.sid + ": " + this.name;
}
}

Students.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package lianxi;

import java.util.Iterator;

//支持foreach迭代循环的学生集合类要继承Iterable接口
public class Students implements Iterable{
// 存储所有学生类的数组
private Student[] stus;

//该构造函数可以生成指定大小的学生类变量数组,并初始化该学生类变量数组
public Students(int size)
{

stus = new Student[size];
for (int i = 0; i < size; i++) {
stus[i] = new Student(String.valueOf(i), "学生" + String.valueOf(i));
}
}
// 实现Iterable接口的重要方法,返回自定义的迭代类变量
public Iterator iterator() {
return new StudentIterator();
}

// 实现Iterator接口的私有内部类,外界无法直接访问
private class StudentIterator implements Iterator
{

// 当前迭代元素的下标
private int index = 0;
// 判断是否还有下一个元素,如果迭代到最后一个元素就返回false
public boolean hasNext() {
return index != stus.length;
}
// 返回当前元素数据,并递增下标
public Object next() {
return stus[index++];
}
// 这里不支持,抛出不支持操作异常
public void remove() {
throw new UnsupportedOperationException();
}
}
}

Lianxix.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package lianxi;

import java.util.*;
import java.io.*;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.reflect.InvocationTargetException;

public class lianxix {

public static void main(String[] args)
{

// 创建学生集合类
Students students = new Students(10);

// 通过for each语句迭代循环学生集合类的每个元素
for (Object obj : students) {
Student stu = (Student) obj;
System.out.println(stu.getSid() + ":" + stu.getName());
}
}
}
输出:
0:学生0
1:学生1
2:学生2
3:学生3
4:学生4
5:学生5
6:学生6
7:学生7
8:学生8
9:学生9
Contents
  1. 1. Student.java:
  2. 2. Students.java:
  3. 3. Lianxix.java: